public class Demo2 {
    Object locker1 = new Object();
    Object locker2 = new Object();

    Thread t1  = new Thread(()->{
        synchronized (locker1){
            try{
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }

            synchronized (locker2){
                try{
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }

            }
        }
    });

    Thread t2 = new Thread(()->{
        synchronized (locker2){
            try{
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }

            synchronized (locker1){
                System.out.println("t2两个线程都获取到");
            }

        }    });

}
